package com.baizhi.exceptionx;

/**
 * 异常处理机制中的try-catch
 * 语法：
 * try{
 *     可能出现异常的代码片段
 * }catch(XXXException e){
 *     出现异常之后的处理手段
 * }
 */
public class ExceptionDemo2 {
    public static void main(String[] args) {
        System.out.println("程序开始了");

        /*
          异常处理机制关心的是哪些程序运行时明知道会发生，但是无法通过逻辑完全避免的问题
          这时我们要通过异常处理截止事先写好一旦发生该情况的时候的解决方案，避免程序中断
          能通过逻辑避免的问题都属于bug,不应当用异常出出力机制来处理，比如空指针异常
         */
        try{
            //String str = null;
            //String str = "";
            String str = "a";

            int[] arr = {1,2,3,5,6,9,12};

            System.out.println(str.length());

            System.out.println(str.charAt(0));

            System.out.println(arr[5]);

            System.out.println(Integer.parseInt(str)); //把字符串转换成Integer类型

        }catch(NullPointerException e){
            System.out.println("发生了空指针异常并解决了");
        }catch (StringIndexOutOfBoundsException  | ArrayIndexOutOfBoundsException e){ //如果出现了多种异常，但是解决方案一致，可以使用一个catch来解决
            System.out.println("字符串或者数组下标越界了，并解决了");
        }catch(Exception e){
            System.out.println("反正是发现了异常，我们正在积极解决");
        }




        System.out.println("程序结束类");
    }
}
